//
//  BytedCertWrapper+Enhanced.h
//  byted_cert
//
//  Created by ByteDance on 2023/5/9.
//

#import <BytedFaceVerifySdk/BytedFaceVerifySdk.h>

NS_ASSUME_NONNULL_BEGIN

@interface BytedCertWrapper (Enhanced)

/// 初始化SDK
/// - Parameters:
///   - stsToken: 使用临时密钥需要传入ststoken, 使用长期密钥可以直接传null
///   - accessKey: 密钥ak
///   - secretAccessKey: 密钥sk
///   - callback: 初始化回调信息, 包含风控Token - "riskToken"
- (void)setupSignWithStsToken:(NSString *)stsToken accessKey:(NSString *)accessKey secretAccessKey:(NSString *)secretAccessKey callback:(void(^)(NSDictionary *))callback;

/// 启动活体+回调活体信息
/// - Parameters:
///   - bytedToken: 从startBytedToken获取，也可以使用服务端中bytedToken中返回的
///   - clientConfig: 从startBytedToken中获取，也可使用服务端中的bytedToken中返回的
///   - options: 活体认证选项
///     - BytedCertParamVerifyNeeded: 是否需要进行比对
///     - BytedCertParamRefSource: 如需比对: "1"为有源,"0"为无源
///   - callback: 活体结果
///     - data 结果信息 返回数据data格式参考身份认证sdk返回内容说明 中"服务端认证返回数据"章节的'jsonData'字段。注意：这里已把jsonData字符串解析成了NSDictionary格式
///       - facelive_info: 活体结果信息
///         - info:  {data:xxx}
///     - error 错误信息，为nil表示成功
- (void)startFaceLive:(NSString *)bytedToken
         clientConfig:(NSString *)clientConfig
              options:(NSDictionary<BytedCertParamKey, id> *)options
             callback:(BytedCertFaceLivenessResultBlock)callback;

/// 启动全流程认证+回调活体信息
/// 流程包括OCR+活体检测+身份比对
/// - Parameters:
///   - params: 认证参数
///     - BytedCertParamRiskMotionList：不同风险等级活体动作列表, Dictionary. 选填, 例: {"free":["0", "1", "2", "3"],"low":["0", "1", "2", "3"],"medium":["0", "1", "2", "3"],"high":["0", "1", "2", "3"]}  //0:"眨眼",1:"张嘴",2:"点头",3:"摇头"
///     - BytedCertParamRiskMotionCount：不同风险等级需要的活体动作个数， Dictionary. 选填, 例:  {"free":2,"low":2,"medium":3,"high":4}
///     - BytedCertParamRiskFixedMotionList: 不同风险等级固定一定需要下发的动作列表, Dictionary. 选填, 例: {"free":["0", "1", "2", "3"],"low":["0", "1", "2", "3"],"medium":["0", "1", "2", "3"],"high":["0", "1", "2", "3"]}
///     - BytedCertParamRiskLivenessType: 不同风险等级活体动作类型配置, Dictionary. 选填, 例: {"free":"motion","low":"motion","medium":"reflection","high":"reflection"}
///     - BytedCertParamLivenessTimeout: 端上活体超时时长，可选范围： [5, 60]，默认：10
///     - BytedCertParamMaxLivenessTrial: 端上动作活体最大尝试次数, 可选范围：[1, 100]，默认：10
///   - options: 活体认证选项
///     - BytedCertParamVerifyNeeded: 是否需要进行比对
///     - BytedCertParamRefSource: 如需比对:  "1"为有源,"0"为无源，必传，目前只支持有源
///   - completion: 认证结果
///     - data 返回数据   返回数据data格式参考身份认证sdk返回内容说明 中"服务端认证返回数据"章节的'jsonData'字段。注意：这里已把jsonData字符串解析成了NSDictionary格式
///     - error 错误信息，为nil表示成功
- (void)beginAuthorizationWithParams:(NSDictionary<BytedCertParamKey, id> *)params
                             options:(NSDictionary<BytedCertParamKey, id> *)options
                          completion:(BytedCertFaceLivenessResultBlock)completion;

@end

NS_ASSUME_NONNULL_END
